/**
 * 2010(c) Copyright Oceansoft Information System Co.,LTD. All rights reserved.
 * <p>
 * Compile: JDK 1.6+
 * <p>
 * 版权所有(C)：江苏欧索软件有限公司
 * <p>
 * 公司名称：江苏欧索软件有限公司
 * <p>
 * 公司地址：中国苏州科技城青山路1号
 * <p>
 * 网址: http://www.oceansoft.com.cn
 * <p>
 * 版本: 苏州公安统一用户管理平台1.0
 * <p>
 * 作者: 090922(陈伟)
 * <p>
 * 文件名:SysResourceServiceImpl.java
 * <p>
 * 类产生时间: 2012-7-11 下午5:38:34
 * <p>
 * 负责人: 090922(陈伟)
 * <p>
 * Email:javacspring@gmail.com
 * <p>
 * 所在组 : 苏州公安统一用户管理平台
 * <p>
 * 所在部门: 电信/国土——技术二部
 * <p>
 * <p>
 */
package com.oceansoft.core.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import com.oceansoft.core.common.constant.Constant;
import com.oceansoft.core.common.util.Pagination;
import com.oceansoft.core.dao.ISysResourceDao;
import com.oceansoft.core.domain.Message;
import com.oceansoft.core.domain.SysResource;
import com.oceansoft.core.service.ISysResourceService;

/**
 * 系统资源操作业务组件实现类
 * 
 * @author chenw
 * 
 */
@Service
public class SysResourceServiceImpl implements ISysResourceService {

	@Resource
	private ISysResourceDao sysResourceDao;

	@Override
	public List<SysResource> findSysResourcesByUser(String userId) {
		return sysResourceDao.findSysResourcesByUser(userId);
	}

	@Override
	public Map<String, ArrayList<SysResource>> findUserResources(String userId) {
		List<SysResource> list = sysResourceDao.findSysResourcesByUser(userId);
		Map<String, ArrayList<SysResource>> _tmp_map = new HashMap<String, ArrayList<SysResource>>();
		for (SysResource res : list) {
			if (StringUtils.hasText(res.getParent_id()) && !_tmp_map.containsKey(res.getParent_id())) {
				ArrayList<SysResource> _list = new ArrayList<SysResource>();
				_list.add(res);
				_tmp_map.put(res.getParent_id(), _list);
			} else {
				_tmp_map.get(res.getParent_id()).add(res);
			}
		}
		return _tmp_map;
	}

	@Override
	public Message deleteSysResourceById(String resourceId) {
		Message msg = new Message("系统资源删除成功！");
		boolean allow_del = sysResourceDao.findRoleResourceRowsByResourceId(resourceId) > 0 ? false : true;
		if (allow_del) {
			sysResourceDao.deleteResourceById(resourceId);
		} else {
			msg.setStatus(Constant.RESULT_FAILD);
			msg.setBody("该资源已被系统角色引用，不允许删除！");
		}
		return msg;
	}

	@Override
	public Pagination<SysResource> findSysResourceByPage(int pageIndex) {
		return sysResourceDao.findSysResourceByPage(pageIndex);
	}

	@Override
	public Pagination<SysResource> findSysResourceByPage(String name, int pageIndex) {
		return sysResourceDao.findSysResourceByPage(name, pageIndex);
	}

	@Override
	public List<SysResource> findAllResources() {
		return sysResourceDao.findAllResource();
	}

	@Override
	public void saveOrUpdateResource(SysResource resource) {
		if (StringUtils.hasText(resource.getResid()) && !"0".equals(resource.getResid())) {
			sysResourceDao.updateSysResource(resource);
		} else {
			sysResourceDao.saveSysResource(resource);
		}
	}

	@Override
	public SysResource findResourceById(String resourceId) {
		return sysResourceDao.findSysResourceById(resourceId);
	}

	@Override
	public List<SysResource> findResourceByRoleId(String roleId) {
		return sysResourceDao.findSysResourceByRoleId(roleId);
	}

}
